/**
 * 格式化日期
 * @param {Date} date 
 */
const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()
  return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

/**
 * 格式化数字
 * @param {number} n 
 */
const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}
/**
 * 空值判断
 * @param {any} n 
 */
const isNull = n => {
  if (n === '' || n === null || n === undefined || n.length === 0) {
    return true
  }
  return false
}

const setNum = val => {
  if (isNull(val)) {
    return 0
  }
  if (!isNaN(val)) {
    return Number(val)
  }
  return 0
}

/**
 * 数组判断
 * @param {any} n 
 * @param {number} len 
 */
const isArray = (n, len = 1) => {
  if (isNull(n)) {
    return false
  }
  if (Array.isArray(n) && n.length >= len) {
    return true
  }
  return false
}

/**
 * 校验版本，升级更新
 */
function checkUpdate() {
  if (uni.canIUse('getUpdateManager')) {
    const updateManager = uni.getUpdateManager();
    updateManager.onCheckForUpdate(function (res) {
      // 请求完新版本信息的回调
      if (res.hasUpdate) {
        
      };
    });
    updateManager.onUpdateReady(function () {
      uni.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启应用？',
        success: function (res) {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            updateManager.applyUpdate();
          };
        },
      });
    });
    updateManager.onUpdateFailed(function () {
      // 新的版本下载失败
      uni.showModal({
        cancelColor: 'cancelColor',
        title: '新版本下载失败',
        confirmText: '我知道了',
        showCancel: false,
      });
    });
  };
}

module.exports = {
  formatTime,
  formatNumber,
  isNull,
  isArray,
  checkUpdate,
  setNum
}
